Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parameter and pinout cleanup: take2 #90

Merged
merged 3 commits into from
Apr 3, 2020
Merged

Parameter and pinout cleanup: take2 #90

merged 3 commits into from
Apr 3, 2020

Conversation

MikeOpenHWGroup
Copy link
Member

Hi Arjan. This is directly related to #277. I believe it addresses all you issues in that pull-request, plus a few other items I've been meaning to clean up. It also updates the CV32E40P_HASH and FPNEW_HASH variables to point to the latest RTL (which Davide has indicated is good ready for verif to use).

If you approve this PR I will kill #277.

MikeOpenHWGroup and others added 2 commits April 1, 2020 10:39
Signed-off-by: Mike Thompson <[email protected]>
Signed-off-by: Michael Thomposn <[email protected]>
module uvmt_cv32_dut_wrap #(// DUT (riscv_core) parameters.
// https://github.com/openhwgroup/core-v-docs/blob/master/cores/cv32e40p/CV32E40P_and%20CV32E40_Features_Parameters.pdf
parameter N_EXT_PERF_COUNTERS = 1, // TODO: this is 0 in riscv_core, which is wrong
INSTR_RDATA_WIDTH = 128,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the wrong/old parameter list. In the updated cv32e40p we will only have the following parameters left: PULP_CLUSTER, FPU, PULP_ZFINX, DM_HALTADDRESS.

.PULP_SECURE (PULP_SECURE),
.FPU (0)
riscv_core #(
.N_EXT_PERF_COUNTERS (N_EXT_PERF_COUNTERS),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wrong parameter list (riscv_core now only has PULP_CLUSTER
FPU, PULP_ZFINX, DM_HALTADDRESS as parameters)

@@ -156,7 +156,7 @@ interface uvmt_cv32_core_interrupts_if (
output logic irq_software, // dut input
output logic irq_timer, // dut input
output logic irq_external, // dut input
output logic [15:0] irq_fast, // dut input
output logic [14:0] irq_fast, // dut input
Copy link
Contributor

@Silabs-ArjanB Silabs-ArjanB Apr 2, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is correct; assignment below is wrong.

@@ -167,7 +167,7 @@ interface uvmt_cv32_core_interrupts_if (
irq_software = 1'b0;
irq_timer = 1'b0;
irq_external = 1'b0;
irq_fast = {15{1'b0}};
irq_fast = {14{1'b0}};
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be {15{1'b0}};

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

D'oh! Thanks.

Copy link
Contributor

@Silabs-ArjanB Silabs-ArjanB left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cv32/tb/uvmt_cv32/uvmt_cv32_dut_wrap.sv does not correspond to the updates I made originally. It is using the old (i.e. very long) riscv_core parameter list, which will not compile together with the updated riscv_core that I made in openhwgroup/cv32e40p#278

Also the updates I made in core-v-verif/cv32/tb/core/riscv_wrapper.sv are now missing (so that testbench will not compile either).

The updates I made in cv32/tb/core/tb_top.sv are critical as well and are missing now (without them we are wrongly simulating all test cases with the wrong 128-bit wide instruction interface).

The updates I made in cv32/tb/uvmt_cv32/uvmt_cv32_tb.sv are now missing. We would be simulating a non-supported configuration.

Same remark for cv32/tb/uvmt_cv32/uvmt_cv32_tb_ifs.sv (it does not include all required changes)

@MikeOpenHWGroup
Copy link
Member Author

Yep, I am aware of all this @Silabs-ArjanB (I should have indicated that in my message at the head of this PR). The changes in place for this PR compile and run without warnings in the testbench code using the specific version of the RTL that will be cloned by the Makefiles (see Common.mk). There are still several to address in the RTL.

I have tested this with dsim and xrun on the uvm environment and verilator, xrun and dsim on the core testbench. Its possible (likely!) that the Makefiles for Questa are not working as all of our Questa users seem to be off-line these days (for good and obvious reasons).

Once openhwgroup/cv32e40p#278 is committed to the head of the cv32e40p master branch, I will work on another fork and issue a PR to update the testbench to be compatible with it. The points you bring up will be addressed at that time.

I'd like to get these changes merged in before openhwgroup/cv32e40p#278 to minimize the effort to update the testbench and environment for those changes to the RTL.

@Silabs-ArjanB
Copy link
Contributor

Okay, then only a minor fix is needed in cv32/tb/uvmt_cv32/uvmt_cv32_tb_ifs.sv

I was thrown off by the remark that once this PR is approved you would kill #277

@MikeOpenHWGroup
Copy link
Member Author

Okay, then only a minor fix is needed in cv32/tb/uvmt_cv32/uvmt_cv32_tb_ifs.sv

Done!

I was thrown off by the remark that once this PR is approved you would kill #85

Yeah, I wasn't clear. Sorry 'bout that.

@MikeOpenHWGroup MikeOpenHWGroup merged commit dc9dfc3 into openhwgroup:master Apr 3, 2020
@MikeOpenHWGroup MikeOpenHWGroup deleted the take2 branch May 6, 2020 18:11
MikeOpenHWGroup pushed a commit that referenced this pull request Dec 12, 2023
cv32e40p corev_dv fixes for illegal handler and debug program
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants